#ifndef INDICESECUENCIAL_H_
#define INDICESECUENCIAL_H_

#include <fstream>
using namespace std;

#define BYTES_POS 4

/**
 * @class IndiceSecuencial IndiceSecuencial.h "IndiceSecuencial.h"
 * @brief Indexa (secuencialmente) sobe otro archivo a otro archivo secuencial
 * @brief Al pedirse un indice devuelve la posicion del registro en el otro archivo
 * @brief Utiliza indices de 2 bytes de longitud fija
 */
class IndiceSecuencial
{
	public:
		/**
		 * @brief Dado un path abre el archivo si existe, y sino lo crea
		 * @param archivo Ruta al archivo que se desea abrir o crear
		 */
		IndiceSecuencial(const char* path);
		/**
		 * @brief Ademas de liberar recursos cierra el archivo
		 */
		~IndiceSecuencial();
		/**
		 * @brief Elimina todos los conenidos del archivo
		 */
		void recrearArchivo();
		/**
		 * @brief agrega la referencia de la posicion al indice
		 * @param referencia la referencia a guardar
		 * @return la id con la que se agrego
		 */
		size_t agregar(size_t referencia);
		/**
		 * @brief Devuelve la referencia a pos dada una id
		 * @param id la id en el indice
		 * @return la posicion
		 */
		size_t devolver(size_t id);
	private:
		string path;
		fstream archivo;
};

#endif /* INDICESECUENCIAL_H_ */
